#include <stdexcept>
#include <iostream>

// interface
class IFoodProcessor {
	public:
	virtual ~IFoodProcessor() = default;
	virtual void blend() = 0;
	virtual void slice() = 0;
	virtual void dice() = 0;
};

class AnotherFoodProcessor : public IFoodProcessor {
	public:
	void blend() override {
		std::cout << "blend impl" << std::endl;
	}

	void slice() override {
		std::cout << "slice impl" << std::endl;
	}

	void dice() override {
		std::cout << "dice impl" << std::endl;
	}
};

class Blender : public IFoodProcessor {
	public:
	void blend() override {
		std::cout << "Blender blend impl" << std::endl;
	}

	void slice() override {
		throw std::logic_error{"I can not do that"};
	}

	void dice() override {
		throw std::logic_error{"Oh on"};
	}
};

// just make this code compile
int main() {
	return 0;
}